package com.java.module.user.service.impl;

import java.util.List;

import com.java.common.service.ApiTokenService;
import com.java.common.utils.DateUtils;
import com.java.module.user.domain.dto.MessageAssignDTO;
import com.java.module.user.domain.vo.MessageAssignVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.java.module.user.mapper.MessageAssignMapper;
import com.java.module.user.domain.MessageAssign;
import com.java.module.user.service.IMessageAssignService;

/**
 * 基础：用户消息Service业务层处理
 *
 * @author Administrator
 * @date 2021-03-24
 */
@Service
public class MessageAssignServiceImpl implements IMessageAssignService {

    @Autowired
    private MessageAssignMapper messageAssignMapper;

    @Autowired
    private ApiTokenService apiTokenService;

    /**
     * 查询基础：用户消息
     *
     * @param maid 基础：用户消息ID
     * @return 基础：用户消息
     */
    @Override
    public MessageAssign selectMessageAssignById(Long maid) {
        return messageAssignMapper.selectMessageAssignById(maid);
    }

    /**
     * 查询基础：用户消息列表
     *
     * @param messageAssign 基础：用户消息
     * @return 基础：用户消息
     */
    @Override
    public List<MessageAssign> selectMessageAssignList(MessageAssign messageAssign) {
        return messageAssignMapper.selectMessageAssignList(messageAssign);
    }

    /**
     * 查询单个基础：用户消息
     *
     * @param messageAssign 基础：用户消息
     * @return 基础：用户消息
     */
    @Override
    public MessageAssign selectMessageAssign(MessageAssign messageAssign) {
        return messageAssignMapper.selectMessageAssign(messageAssign);
    }

    /**
     * 新增基础：用户消息
     *
     * @param messageAssign 基础：用户消息
     * @return 结果
     */
    @Override
    public int insertMessageAssign(MessageAssign messageAssign) {
        messageAssign.setCreateTime(DateUtils.getNowDate());
        return messageAssignMapper.insertMessageAssign(messageAssign);
    }

    /**
     * 修改基础：用户消息
     *
     * @param messageAssign 基础：用户消息
     * @return 结果
     */
    @Override
    public int updateMessageAssign(MessageAssign messageAssign) {
        messageAssign.setUpdateTime(DateUtils.getNowDate());
        return messageAssignMapper.updateMessageAssign(messageAssign);
    }

    /**
     * 批量删除基础：用户消息
     *
     * @param maids 需要删除的基础：用户消息ID
     * @return 结果
     */
    @Override
    public int deleteMessageAssignByIds(Long[] maids) {
        return messageAssignMapper.deleteMessageAssignByIds(maids);
    }

    /**
     * 删除基础：用户消息信息
     *
     * @param maid 基础：用户消息ID
     * @return 结果
     */
    @Override
    public int deleteMessageAssignById(Long maid) {
        return messageAssignMapper.deleteMessageAssignById(maid);
    }

    /**
     * 获取用户信息列表
     *
     * @param messageAssign 用户信息
     * @return
     */
    @Override
    public List<MessageAssignVO> getMessage(MessageAssignDTO messageAssign) {
        return messageAssignMapper.getMessage(messageAssign);
    }

    /**
     * 获取用户未读数量
     *
     * @return
     */
    @Override
    public Long queryUserUnRead() {
        Long uid = apiTokenService.getLoginUserId();
        return messageAssignMapper.queryUserUnRead(uid);
    }

    @Override
    public int insertMessageAssignByUids(List<MessageAssign> messageAssignList) {
        return messageAssignMapper.insertMessageAssignByUids(messageAssignList);
    }

}